package com.wicket.okrapp.integration.dto;

import com.wicket.okrapp.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc AddTargetSingleOrParentTargetCycleComReqDto
 * @使用场景
 */
@Data
public class AddTargetSingleOrParentTargetCycleComReqDto
  extends BaseDto
  implements Serializable {

  /**
   * 目标计划开始时间
   */
  @NotNull(message = "目标计划开始时间不能为空")
  @ApiModelProperty("目标计划开始时间")
  private Date cycleStartTime;

  /**
   * 目标计划结束时间
   */
  @NotNull(message = "目标计划结束时间不能为空")
  @ApiModelProperty("目标计划结束时间")
  private Date cycleEndTime;

  /**
   * 父周期周期类型
   */
  @NotNull(message = "父周期周期类型不能为空")
  @ApiModelProperty("父周期周期类型")
  private String fatherCycleType;

  /**
   * 被评对象目标周期标识
   */
  @NotNull(message = "被评对象目标周期标识不能为空")
  @ApiModelProperty("被评对象目标周期标识")
  private String evaObjTargetCycleCode;

  /**
   * 冗余评价对象ID
   */
  @ApiModelProperty("冗余评价对象ID")
  private String evaluationObjectId;

  /**
   * 关联目标内容ID
   */
  @NotNull(message = "关联目标内容ID不能为空")
  @ApiModelProperty("关联目标内容ID")
  private String targetCycleContentId;

  /**
   * 关联目标内容类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标
   */
  @NotNull(message = "关联目标内容类型编码不能为空")
  @ApiModelProperty("关联目标内容类型编码")
  private String targetCycleContentTypeCode;

  /**
   * 是否用于一级部门 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否用于一级部门")
  private String isUseFirstDept;

  /**
   * 是否父周期 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否父周期不能为空")
  @ApiModelProperty("是否父周期")
  private String isParentCycle;

  /**
   * 是否子周期 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否子周期不能为空")
  @ApiModelProperty("是否子周期")
  private String isSubCycle;

  /**
   * 是否中期 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否中期不能为空")
  @ApiModelProperty("是否中期")
  private String isMetaphase;

  /**
   * 是否有过程周期 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否有过程周期")
  private String haveProcessCycle;

  /**
   * 冗余业务场景标识配置项
   */
  @NotNull(message = "冗余业务场景标识配置项不能为空")
  @ApiModelProperty("冗余业务场景标识配置项")
  private String bizSceneCode;

  /**
   * 冗余评价主题类型配置项
   */
  @NotNull(message = "冗余评价主题类型配置项不能为空")
  @ApiModelProperty("冗余评价主题类型配置项")
  private String evaluationSubjectTypeCode;

  /**
   * 冗余评价模板类型配置项
   */
  @NotNull(message = "冗余评价模板类型配置项不能为空")
  @ApiModelProperty("冗余评价模板类型配置项")
  private String evaluationTemplateTypeCode;

  /**
   * 冗余规划类型 GENERAL_PLANNING:常规规划 THEMATIC_PLANNING:专题规划
   */
  @NotNull(message = "冗余规划类型不能为空")
  @ApiModelProperty("冗余规划类型")
  private String planningType;

  /**
   * 冗余目标ID
   */
  @NotNull(message = "冗余目标ID不能为空")
  @ApiModelProperty("冗余目标ID")
  private String targetId;

  /**
   * 冗余评价主题ID
   */
  @NotNull(message = "冗余评价主题ID不能为空")
  @ApiModelProperty("冗余评价主题ID")
  private String evaluationSubjectId;

  /**
   * 冗余评价模板ID
   */
  @NotNull(message = "冗余评价模板ID不能为空")
  @ApiModelProperty("冗余评价模板ID")
  private String evaluationTemplateId;

  /**
   * 目标内容编号
   */
  @ApiModelProperty("目标内容编号")
  private String targetContentNumber;

  /**
   * 相对上级排序
   */
  @NotNull(message = "相对上级排序不能为空")
  @ApiModelProperty("相对上级排序")
  private Long relativeOrderNumber;

  /**
   * 评价模板创建时间排序
   */
  @NotNull(message = "评价模板创建时间排序不能为空")
  @ApiModelProperty("评价模板创建时间排序")
  private Date sortCreateTime;

  /**
   * 批次标识
   */
  @NotNull(message = "批次标识不能为空")
  @ApiModelProperty("批次标识")
  private String batchCode;

}
